サーバーの総合的なスペックとは、
「サーバーPCの性能」と「回線能力」を総合して割り出されたもの
と言えると思います。
いくらPCの性能が良くても、それに見合う回線速度がないと意味が無いし、その逆もしかりです。
そして「インターネットサーバー」には、実際に使用しようとしている用途によって
必要とされるPC性能、回線速度が何通りにも分かれます。
ここでは大きく4つの用途に分けて説明します。
そのタイプごとに必要とされるサーバーのスペックと回線速度に関して、詳しく説明していきたいと思います。
これとは別に「信頼性」というのもあります。
障害時にどれだけ対処できるかですが、
たとえば停電時にいきなり電源が切れないように無停電電源装置…UPSを導入するとか、
HDDのエラーを減らすためにRAIDでミラーリングをするとかありますが…それはここでは説明しません。
了承下さい。
その前に、サーバーPCに必要なPCパーツを上げておきたいと思います。
CPUとメモリ、HDD、マザーボードと電源とLANポート2つ。FDドライブとCD-ROMドライブ。
グラフィックボードですが、最近のマザーボードにはおそらく内臓されていると思われます。
それで十分です。もしグラフィックボードが無かったら、適当な安いものを買っておきましょう。
必要なのはPC本体そのもの…変わっているところと言えば、LANポートが2つというところでしょうか。
100BASE-T対応ネットワークカードは、2枚用意しておきましょう。
内臓されていたのなら追加の1枚で十分ですが、LANが2つ挿せる事は必須です。
これはサーバーを「ルーター」や「ゲートウェイ」としても動作させる時、
非常に大切になりますので絶対に忘れないようにして下さい。
本当にこれだけで十分だったりします。あ、本体ケースもあったほうがいいです(笑)。
インストールを開始してネットワーク設定が終わるまで使用するであろうモニターとキーボードは、
一時的にPCから流用が基本です。
サーバーとして電源を付けっぱなしするのであれば、電源には少し気を使ってもいいかもしれません。
(静かな電源の方がいいと思います…はい)
ただし、これはFreeBSDをごく一般的なパソコンにインストールする事を前提にして書いてあります。
LinuxのX-Windowで色々やりたいのならば専用のキーボードにマウスがないといけないですし、
人によってはモニタも別なものを用意しないといけないかもしれません。
では、必要なPCパーツを上げたところで、
次に具体的にはどれにどれくらいのスペックがあればいいのか、を書いて行きたいと思いますが、
FDドライブはフロッピーからデータを読めれば問題なし。
CD-ROMドライブはCDからデータを読み出せれば問題なし。
マザーボートと電源は直接性能に関わる部分じゃないので問題外。
グラフィックボードは文字をモニタに表示出来るだけで十分。
ということで、この4つは問題外として除外させていただきます。
まず、
「自分がサーバーを経由しつつインターネットが出来て、
サーバーで個人のHPを公開して、その中で簡単なCGIを使いたい。それとメールも使いたい」
相手の要求に対してリアルタイムで処理する必要も無く(0.1秒程度の誤差なら許される)、
CPUも回線もほとんど使わないようなものであれば、
一昔前のPCどころか、二昔前のPCでも問題なく動きます。
CPUは300MHzもあれば十分でしょう。これでも十分すぎる気がします。
メモリは128Mもあれは十分。HDも4Gあれば使い切る事はないでしょう。
となればお古のPCでいいのですが、それは今まで長期間使われていたと言う事もあり、
ハードウェア的にどれだけ寿命に近づいているのか分からない、という部分が多少不安。
個人で趣味の範囲でやるのであれば、そんなことは気にする必要はないと思われます。
もし新しいPCを用意する場合は、現段階で揃えられる最低スペックのPCで十分です。
それでも一昔前に「スパコン」と呼ばれていたPCより高性能だと思われますので…ええ…。
これだけの用途のサーバーに高価なCPU、100G単位のHDを使うなとは言いませんが、
こういったサービスは、多量のCPUリソースを使う事がほとんどないサービスであり、
回線速度により大きい要求はこなせない=回線速度に見合った性能があればいい。
それ以上はオーバースペックであり金の無駄です。
上り1Mbpsの回線を持っているとすると、パソコンの処理単位であるバイトに直すと約120kバイト。
1秒間に120kバイト以上のデータを処理するだけの能力(多少オーバーヘッドが存在するので、増えますが)が
PCにあれば、それ以上の性能は不要と言うことになります。
しかもこの120kはあくまで「理論上の最大値」であり、
個人のHP公開、メール用サーバーにこれだけの要求が連続して来る事はほぼ無いと思われます。
ただし、自分のPCからインターネットに出る場合もこのサーバーを経由して出て行くことになるので、
自分がデータをダウンロードする場合、それは下り8Mbps(あくまで理論値であり、
実際にこれだけの値が実際に出る事はないと思います)を使用する事になります。
あと、CPUで特殊なプログラムを実行(自分のHPのみで簡単なCGIを動かす程度なら大した負担にならない)
するというようなことはほとんどないと仮定すると、
上り(120k)と下り(1M)を合わせて、一秒間に最高1.12Mバイト程度の処理能力があれば、
サーバーとして十分な性能を持っている、という事になると思います。
32bitの処理能力を持つ300MHz(一秒間に実行できる命令の回数)CPUの能力は、
HDDやメモリへのアクセスを一切考えなければ、
1秒で4バイトx300,000,000で、1,2Gバイトの処理が出来るという事になります(のわっ)。
しかしメモリへのアクセス速度(HDDにアクセスすればさらに!)はもっと低いので、
これに引きずられる形でガクッと性能は落ちるわけですが…
それでも一秒間に1.12Mバイトの処理など朝飯前だと理解していただいたと思います…。
メモリに関しても、システムが所有する部分以外の空きメモリがこの程度あるだけで問題ないと言えます。
以上のことを踏まえつつ、次のケースを考えて見ます。
「インターネットで特殊なサービス(例えばゲームサーバー)を運用したい」
つまりリアルタイムでの処理が必要(0.1秒の誤差も許されない)な、
CPUとメモリ、ネット回線を多く使用する場合であれば、
回線に多量のデータを送る処理に加えて、サーバー内部での様々なプログラム処理が必須になってきます。
まず、ゲームサーバーを遅延無く動作させ続けるのにはどの程度以上の処理能力をもったCPUが必要なのか?
メモリはどれくらい用意すればスワップが起こらないのか?
1ユーザー(クライアント)あたり、どの程度のCPUとメモリの資源を消費するのか?
というハードウェア的な問題に加え、
接続してくる同時最大接続ユーザー(クライアント)は何名なのか?
1ユーザー辺りの回線使用量はどれくらいなのか?
というネットワーク的な問題を知る事が重要になってきます。
使用するCPUとメモリを「資源」と表すとして、必要なCPUとメモリを計算するとすれば
ゲームサーバー実行に必要な資源+
(1ユーザーが処理に使用する資源+1ユーザーにリアルタイムにデーターを送受信するための資源)
x接続ユーザー数
…となるはずですが、計算するのはめんどいので、パス。計算も多分不要です(ぉい)。
こういったサーバーソフトを配布している開発元は
「これを正常に動作させるには〜以上のスペックが必要です」と銘記してあるはずです。
しかしこれはあくまで「動作保障最低限スペック」である事が多く、
本当に銘記されているのと同等のスペックのマシンを用意するのはいろんな意味でお勧めできません。
これより2割3割以上…できたら2倍以上性能のいいものを使用すれば、
ハード的な問題はまずないと思って大丈夫です。
それより問題なのは、大概の場合、個人の回線でこう言ったサービスを行う場合、
ハードウェア的な問題よりむしろネットワーク回線の許容限界が原因で
正常なサービスを行えなくなる事が多いからです。
上り120kバイトの回線で、1ユーザーあたり回線使用量10kと想定したらどうなるか?
理論上12名が限界になります。
だけど、ギャランティ型ではなく、基本的にベストエフォート型であるネットワーク回線には「波」があるため
限界まで使用する事はあまり推奨できないので、
無難な設定をするならば、余裕を持って10名になると思います。
それでもベストエフォート型である以上、プロバイダの状況によっては、
時折、もしくは頻繁にラグが起こるなどの問題を回避する事は不可能だと思われます。
もしその回線に12名以上が接続してきたらどうなるのか?
回線は限界以上のデータは送れないので、
どこかであるユーザーのデータが拒否・廃棄されサーバーに届かない…
こういったことが連続して起こり、その時点で「ラグ」を発生する事になります。
しかしそんな回線上の限界で一部のユーザーのデータが届いていない事などサーバーの知った事ではなく、
ひたすら自分に届いたデーターだけを処理するため、様々な非整合な出来事が起こります。
アイテムが消えた…止まったら、突然違うところにワープしていたなど、これが原因で起こります。
逆にサーバー処理能力が足りない場合は…やはり、全体的に動作が遅くなってしまうと思われます。
処理能力を超えるデーターが次々に送られてきて、最終的にはどこかでサーバー
(というより、サーバーで動いてるサーバーソフトウェア)がクラッシュするかも知れません。
自分で立てたサーバーでこういった厳密なリアルタイム処理を必要とされるサービスを提供する場合、
「自分の回線では、どこまでが可能でどこまでが不可能なのか?」をまず念頭に置く事き、限界を知ることが重要です。
では、最後に残りの2つの例を簡単に挙げたいと思います。
「自分がサーバーを経由しつつインターネットが出来て、
インターネット経由で大量のデーター交換やファイル公開を考えている」
つまり、相手の要求に対してリアルタイムで処理する必要も無く(0.1秒程度の誤差なら許される)、
CPUやメモリはほとんど使わないものの、HDDの容量と回線帯域のみを著しく使用する場合。
この場合、自分(サーバー)から相手にアップできるデーターは最大は上り回線速度である。
という事に注意してください。
上り1M/下り8Mサービスである場合、
相手に一秒間にデーターを送れる最大値は上り1MBps…すなわち125kバイトとなります。
この場合、CPUとメモリはそれなりに性能のいいものでいいです。
その代わり、ファイルサーバーとして使用するのであれば大容量HDDを用意しないといけません。
もし扱うデーターが重要なものであれば、
HDDの故障を極力回避するためにRAIDによるミラーリング等を考えた方がいいと思います。
ただし、この場合でも、結局一番最初の例のように
「回線速度により大きい要求はこなせない=回線速度に見合った性能があればいい。
それ以上はオーバースペックであり金の無駄です」ということが前提になると覚えておいて下さい。
ただし、例外もあります。
プライベートなIPアドレス空間になるであろう
「サーバーと自分のPC(何台でも)の間であればLANボードの性能を出せる」と言う事です。
自分のPCからサーバーにデータを転送する場合、100MbpsのLANを使用していたのであれば、
おおよそ1秒間に12Mの転送速度でサーバーにデータを送れます。
ただし、そこから先であるインターネットに出ると、一気に回線の上り速度に制限されるわけなのですが。
その場合、12Mの転送速度に耐えれるCPUを用意するとなれば…
300MHzのCPUでも1.2Gの処理速度を持っているのは説明したとおり。
それよりも多量のデータはHDDからの読み込み、書き込みメインで処理される事になります。
補助記憶装置であるHDDとデーターをやり取りとするとき、
HDDへのアクセスはCPUの処理能力よりずっと遅い速度で行われる事になります。
それが頻繁であればあるほどこの速度差は「ボトルネック」となります。
HDDの速度が遅ければ遅いほど、CPUの何も出来ない待ち時間が増えて、
サーバーとしての性能が落ちます。
なので、性能のいい(そして壊れにくい)HDDを用意するほうが良い事になります。
そして最後に。
「自分のサーバーで大規模データーベースサーバー等を動かして、
多量の処理をして相手に公開したい」
つまり、相手の要求に対してリアルタイムで処理する必要も無く(0.1秒程度の誤差なら許される)ものの、
CPUやメモリをとにかく使用します。その代わり、おそらく回線帯域は使用しないでしょう。
というのも、外部のユーザーがこういったデーターベースサーバーに求めるものは、基本的に
「ユーザーの要求に従ってサーバーに登録されている多量のデータを処理した結果、
導き出された一部のデーターである」ためです。
サーバー内部で非常に複雑な処理を行うものの、
回線を介してユーザーに送り返されるデーターはそんなに大きなものではないはずです。
この場合、とにかくサーバーの性能が良い事が条件になってきます。
CPUはもちろんの事、データーを処理するためにメモリスワップが起こらないように
多量のメモリ(1G以上必要になるかも知れません)。
性能の良いHDDと、回線以外はハイスペックのPCを用意する必要が出てくるかもしれません。
ということで、4つの異なった用途に使用するサーバーと、
それに必要とされるであろうスペックを紹介してみました。
おそらくほとんどの方には、最初に説明した「Webサーバー」に当てはまると思います。
サーバーと言うからには、高性能PCが必要
…と言うわけではなく、用途によっては数世代前のPCでも十分使用可能である。
そんな事をぼんやりと理解していただければいいと思います。
[一つ上に戻る] |